package app.services.impl;

import java.util.List;

import app.models.CH;
import app.models.SubEspecialidade;
import app.repositories.Repository;
import app.repositories.SubEspecialidadeRepository;
import app.services.CHService;
import app.services.SubEspecialidadeService;
import br.com.caelum.vraptor.ioc.Component;

@Component
public class SubEspecialidadeServiceImpl extends GenericServiceImpl<SubEspecialidade, Long> implements SubEspecialidadeService {

	private final SubEspecialidadeRepository repository;
	private final CHService chService;
	
	
	@SuppressWarnings("unchecked")
	public SubEspecialidadeServiceImpl(SubEspecialidadeRepository repository, CHService chService){
		this.repository = repository;
		this.chService = chService;
		super.setGenericRepository((Repository<SubEspecialidade, Long>) repository);
	}
	
	public List<SubEspecialidade> findLastSubEspecialidades() {
		return this.repository.findLastSubEspecialidades();
	}

	public List<SubEspecialidade> findAllOrdered() {
		return repository.findAllOrdered();
	}
	
	public List<SubEspecialidade> findAllByConvenio(Integer idConvenio) {
		return repository.findAllByConvenio(idConvenio);
	}
	
	public SubEspecialidade calculateSubEspecialidadeValue(SubEspecialidade subEspecialidade){
		
		CH ch = chService.findByConvenioId(subEspecialidade.getIdConvenio());
		
		if(ch != null){
			subEspecialidade.setCh(ch);
			subEspecialidade.setIdCH(ch.getId().intValue());
			subEspecialidade.setValor((ch.getValor() * subEspecialidade.getNumeroCH()));
		}
		
		return subEspecialidade;
		
	}
	
}
